using System;
using System.Collections.ObjectModel;
using OrdersManager.Module.Constants;

namespace OrdersManager.Module.Services
{
	public interface IOrderWorkflowManager:IDisposable
	{
		Guid CreateOrderWorkflow(Guid orderId);
		ReadOnlyCollection<OrderStatus> GetOrderPossibleStates(Guid orderId);
		ReadOnlyCollection<Guid> GetOrdersByState(OrderStatus stateMode);
		OrderStatus GetOrderState(Guid orderId);
		void NotifyOrderCancelled(Guid orderId);
		void NotifyOrderCreated(Guid orderId);
		void NotifyOrderProcessed(Guid orderId);
		void NotifyOrderShipped(Guid orderId);
		void NotifyOrderUpdated(Guid orderId);

        bool InstanceIsWaiting(Guid instanceId);
	}
}